Field of the Subject Disclosure
The present subject disclosure relates to computer programming. In particular, the present subject disclosure relates to incorporating graphical and other references to existing command line syntax.
Background of the Subject Disclosure
Computer interfaces have undergone several iterations from the inception of the computer. The first computers had basic input and output capabilities requiring mechanical input, printed output, and lots of user effort. With the advent of the CRT and keyboard, a command line input was conceived, with a text-based output using archaic and complex language syntaxes. Over time, graphical capabilities improved to the point that a user did not have to use a command line at all. Instead, entire sets of operations were performed graphically, using input devices such as mice, touchscreens, etc. Today, one would be hard-pressed to find an average computer user, or even a technically savvy home user, using a command line interface (CLI). The graphical user interface (GUI) has essentially taken over.
However, certain applications still require the use of commands. Especially for systems administrators who monitor and perform operations on objects in complex file systems, process trees, etc., a GUI depicting these structures typically has a shell command interface associated with them to operate upon. Examples include the DOS prompt of a MS WINDOWS system, KORN SHELL (ksh), LINUX BASH, etc. Particularly for scripting languages and dynamic programming languages such as PERL and PYTHON, a CLI provides users with much more control of their file system and operating system and enables a user to easily script a sequence of commands to perform a task or execute a program. Often when accessing another computer or networking device over a network a user will only be able to manipulate the device and/or its files using a command line, CLI, or other text only manipulation.
On the other hand, GUI users have windows that enable a user to easily view, control, and manipulate multiple things at once, and are commonly much faster to multitask with when compared to a command line. Although many command line environments are capable of multitasking they do not offer the same ease and ability to view multiple things at once on one screen. Another issue with legacy command line scripting languages is that when working with very dense system trees and process trees involving complex paths, the command lines become unwieldy and complex, resulting in large amounts of code. Particularly with remote control of a server from a client terminal, dense command syntax, especially in batches, results in overloading the network and consuming valuable system resources.
Past solutions have attempted to fuse GUIs and CLIs by providing a plethora of menu-driven options, and a static set of operations to be performed on objects that are graphically selected on the GUI. However, performing large complex operations using these methods still does not provide the speed and ease of use of a traditional CLI. The problems of either type of interface still exist today.
Therefore, what is needed is an improved user interface that enables graphically represented object structures while taking advantage of existing command language syntax.